#include <iostream>
#include <functional>
using namespace std;
//实现bind_function中绑定成员函数，实现多态
class A{
public:
    //首先定义一个函数类型
    using f1=function<void()>;
    //然后给函数类型创建一个函数对象
    f1 _f;
    //写一个函数来给这个函数对象进行初始化
    void Initialise(f1 ref){
        _f=ref;
        cout<<"Initialise"<<endl;
    }
    //然后执行这个函数
    void handle(){
        if(_f){
            _f();
            cout<<"handle"<<endl;
        }
    }
};
void print(){
    cout<<"print"<<endl;
}
void test(){
    A a;
    function<void()> f=bind(print);
    a.Initialise(f);
    a.handle();
}
int main(int argc, char * argv[]){
    test();
    return 0;
}

